﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AudiPyme.DAL;

namespace AudiPyme.BLL
{
    public class InstanciaTiposActivosAmenazasCriteriosRiesgoNegocio
    {

        //Método que elimina una lista de relaciones Tipo Activo - Amenaza - Criterio de Riesgo actuales de una empresa
        public static void EliminarInstanciaTipActAmenCrit(TipActAmenCritRiesCheck[, ,] CheckList, int IdEmpresa)
        {
            int numeroTiposActivo = TiposActivosFactory.TiposActivosTotales();
            int numeroAmenazas = AmenazasFactory.AmenazasTotales();
            int numeroCriterios = CriteriosRiesgoFactory.CriteriosRiesgoTotales();
            for (int i = 0; i < numeroTiposActivo; i++)
            {
                for (int j = 0; j < numeroAmenazas; j++)
                {
                    for (int k = 0; k < numeroCriterios; k++)
                    {
                        if (CheckList[i, j, k].ValorCheck == true)
                        {
                            int IdTipoActivo = CheckList[i, j, k].IdTipoActivo;
                            int IdAmenaza = CheckList[i, j, k].IdAmenaza;
                            int IdCriterioRiesgo = CheckList[i, j, k].IdCriterioRiesgo;
                            InstanciaTiposActivosAmenazasCriteriosRiesgoFactory.EliminarInstanciaTipActAmenCrit(IdTipoActivo, IdAmenaza, IdCriterioRiesgo, IdEmpresa);
                        }
                    }
                }
            }
        }

        //Método que recoge la información de las Relaciones Tipo Activo - Amenaza - Criterio de Riesgo actuales de una empresa
        //y las devuelve con el formato adecuado para bindearlas a un gridview
        public static List<RelacTipActAmenVuln> ListaAmenazasPorTipoActivoEmpresa(int IdEmpresa, String TipoActivoSelec)
        {
            List<RelacTipActAmenVuln> LAmenPorTipActEmp = new List<RelacTipActAmenVuln>();
            ModeloContainer agenteBD = new ModeloContainer();
            LAmenPorTipActEmp = (from InstTipAmenEmp in agenteBD.InstanciaTiposActivosAmenazasCriteriosRiesgoEstablecer
                                 join TipAct in agenteBD.TiposActivosEstablecer
                                       on InstTipAmenEmp.IdTipoActivo equals TipAct.IdTipoActivo
                                 join Amen in agenteBD.AmenazasEstablecer
                                 on InstTipAmenEmp.IdAmenaza equals Amen.IdAmenaza
                                 where InstTipAmenEmp.IdEmpresa == IdEmpresa &&
                                       TipAct.TipoActivo == TipoActivoSelec && InstTipAmenEmp.Actual == true
                                 select new RelacTipActAmenVuln { IdTipoActivo = TipAct.IdTipoActivo, NombreTipoActivo = TipAct.TipoActivo, IdAmenVuln = Amen.IdAmenaza, NombreAmenVuln = Amen.Amenaza }).ToList();
            return LAmenPorTipActEmp;
        }

    }
}
